Method and system for replicating content over a network

ABSTRACT

A system and method is directed to replicating packet transactions over a network. The system includes a replication component and a plurality of servers enabled to include substantially the same content. The replication component receives a packet from a client and forwards it to a first server. If the packet is to be replicated, a replicate of the packet is forwarded to the other servers in the plurality of servers so that at least a portion of the content on the first server and the other servers are synchronized. Forwarding of the replicate packet may be delayed for some period of time, and need not be concurrent. If responses received from each server are substantially the same, a message is sent to the client. Moreover, transaction replication can occur across servers arranged in different configurations, including disparate databases.

FIELD OF THE INVENTION

The present invention relates to network traffic replication, and inparticular to a method and system for replicating packet transactionsover a network between at least two network devices.

BACKGROUND OF THE INVENTION

Users commonly employ computerized databases, or the like to store largeamounts of data for easy access and manipulation. In a traditionalcomputer system, there is a single copy of the data stored typically ona single server. By maintaining a single, centralized storage, such asystem avoids inconsistencies that might otherwise occur with more thanone copy of the data. Nevertheless, the centralized storage approach hasseveral drawbacks. First, since only one copy of the data exists, if thedata becomes corrupted or inaccessible, the entire system becomesunavailable. Second, with only one copy of data available for readpurposes, the system may appear slow and time-consuming, especially tomultiple users.

Consequently, many of today's organizations, protect against disruptionscaused by failures of a single server, by allowing additional copies or“replicas” of the data to be stored on multiple servers. That is, a copyof each data item stored on one of the system's servers may also existon another server, sometimes called a replicate server. Such replicateservers may be collocated, or distributed across multiple locations. Byreplicating the data across multiple instances of servers, a certaindegree of fault-tolerance may be obtained. Furthermore, by having anavailable replica of the data available, the response time of certaintransactions may be improved.

Although replicated systems provide the above advantages overnon-replicated systems, there are nonetheless inherent costs associatedwith the replication of data. To replicate data many of today'sarchitectures require significant overhead in applications that managethe data itself. Furthermore, each application may need to havesubstantially the same configuration as every other data application toenable replication between them, resulting in an additional load on eachapplication. Thus, previous solutions may be unacceptable in complex,network-level, high availability systems. Therefore, it is with respectto these considerations and others that the present invention has beenmade.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments of the present invention aredescribed with reference to the following drawings. In the drawings,like reference numerals refer to like parts throughout the variousfigures unless otherwise specified.

For a better understanding of the present invention, reference will bemade to the following Detailed Description of the Preferred Embodiment,which is to be read in association with the accompanying drawings,wherein:

FIG. 1 illustrates an exemplary environment in which a replicatoroperates to replicate a packet transaction over a network between atleast two servers;

FIG. 2 illustrates components of an exemplary environment in which theinvention may be practiced;

FIG. 3 illustrates one embodiment in which a distributor manages apacket transaction over a network to a transaction replicator;

FIG. 4 illustrates one embodiment of an integrateddistributor/transaction replicator for replicating a packet transactionover a network;

FIG. 5 illustrates a flow chart for one embodiment of a process forreplicating a packet transaction over a network to at least two servers;and

FIG. 6 illustrates a flow chart for one embodiment of a process formanaging error checking over a network between at least two servers, inaccordance with the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The present invention now will be described more fully hereinafter withreference to the accompanying drawings, which form a part hereof, andwhich show, by way of illustration, specific exemplary embodiments bywhich the invention may be practiced. This invention may, however, beembodied in many different forms and should not be construed as limitedto the embodiments set forth herein; rather, these embodiments areprovided so that this disclosure will be thorough and complete, and willfully convey the scope of the invention to those skilled in the art.Among other things, the present invention may be embodied as methods ordevices. Accordingly, the present invention may take the form of anentirely hardware embodiment, an entirely software embodiment or anembodiment combining software and hardware aspects. The followingdetailed description is, therefore, not to be taken in a limiting sense.

Throughout the specification, the meaning of “a,” “an,” and “the”include plural references. The meaning of “in” includes “in” and “on.”

Briefly stated, the present invention is directed to a system,apparatus, and method for replicating packet transactions over a networkbetween at least two network devices, such as servers, and the like. Thesystem includes a replication component and a plurality of serversenabled to include at least a portion of their content that issubstantially the same across each server. The replication componentreceives a packet from a client and forwards it to a first server in theplurality of servers. If the packet is to be replicated, a replicate ofthe packet is forwarded to the other servers in the plurality of serversso that at least a portion of the content on the first server and theother servers are synchronized. Replication may be based in part onwhether the transaction is a read transaction, a write transaction, oranother characteristic associated with the packet. In one embodiment,forwarding of the replicate packet to the other servers may be delayedfor some period of time. Responses may be received from each server. Ifeach received response is substantially the same, a message is sent tothe client. Moreover, the plurality of servers may include disparateconfigurations for at least two servers. That is, the present inventionenables transaction replication across disparate databases, servers,applications, and the like.

Illustrative Operating Environment

FIG. 1 illustrates an exemplary environment in which a replicatoroperates to replicate a packet transaction over a network on at leasttwo servers. Replication system 100 may include many more componentsthan those shown, however, they are sufficient to disclose anillustrative embodiment for practicing the invention.

As shown in the figure, replication system 100 includes client computer102, wide area network (WAN)/local area network (LAN) 104, replicator106, and server computers 120-122. WAN/LAN 104 is in communication withclient computer 102 and replicator 106. Replicator 106 is also incommunication with server computers 120-122.

Client computer 102 may be any device capable of sending and receiving apacket over a network, such as WAN/LAN 104, to and from servers 120-122.The set of such devices may include devices that typically connect usinga wired communications medium such as personal computers, multiprocessorsystems, microprocessor-based or programmable consumer electronics,network PCs, and the like. The set of such devices may also includedevices that typically connect using a wireless communications mediumsuch as cell phones, smart phones, pagers, walkie talkies, radiofrequency (RF) devices, infrared (IR) devices, CBs, integrated devicescombining one or more of the preceding devices, and the like.Alternatively, client computer 102 may be any device that is capable ofconnecting using a wired or wireless communication medium such as a PDA,POCKET PC, wearable computer, and any other device that is equipped tocommunicate over a wired and/or wireless communication medium.

WAN/LAN 104 couples replicator 106 with client computer 102. WAN/LAN 104is enabled to employ any form of computer readable media forcommunicating information from one electronic device to another. Inaddition, WAN/LAN 104 can include the Internet in addition to local areanetworks (LANs), wide area networks (WANs), direct connections, such asthrough a universal serial bus (USB) port, other forms ofcomputer-readable media, and any combination thereof.

On an interconnected set of LANs, including those based on differingarchitectures and protocols, a router acts as a link between LANs,enabling messages to be sent from one to another. Also, communicationlinks within LANs typically include twisted wire pair or coaxial cable,while communication links between networks may utilize analog telephonelines, full or fractional dedicated digital lines including T1, T2, T3,and T4, Integrated Services Digital Networks (ISDNs), Digital SubscriberLines (DSLs), wireless links including satellite links, or othercommunications links known to those skilled in the art. Furthermore,remote computers and other related electronic devices could be remotelyconnected to either LANs or WANs via a modem and temporary telephonelink. In essence, WAN/LAN 104 includes any communication method by whichinformation may travel between client computer 102 and replicator 106.

Servers 120-122 may include any computing device capable ofcommunicating packets with client computer 102. Each packet may convey apiece of information. A packet may be sent for handshaking, i.e., toestablish a connection or to acknowledge receipt of data. The packet mayinclude information such as a request, a response, a put command, aconfiguration command, or the like. For example, a packet may representa write transaction, a read transaction, or the like, to a database, orother application hosted on servers 120-122. The communicatedinformation may also be associated with Object Transaction Services, andthe like, for the Common Object Request Broker Architecture (CORBA),Common Object Models (COM), Distributed Common Object Models (DCOM), andthe like.

Generally, packets received by servers 120-122 will be formattedaccording to TCP/IP, but they could also be formatted using anothertransport protocol, such as User Datagram Protocol (UDP), InternetControl Message Protocol (ICMP), NETbeui, IPX/SPX, token ring, and thelike.

Moreover, servers 120-122 are arranged such that at least a portion ofcontent on each server may be replicated across the other servers120-122. In one embodiment, one server is pre-determined as a masterserver for content. However, the present invention is not so limited,and no server need be pre-determined as the master server for thecontent. Moreover, where an implementation does pre-determine a masterserver for the content, the designation may be rotated through servers120-122, always designated to a particular server, or determined basedon a variety of conditions, events, and the like. For example, a masterserver may be designated based on availability of a given server, loads,network traffic, server configuration, and the like. Moreover, theremaining servers in the array of servers 120-122 are typicallydesignated as replicate servers. Thus, for example, if server 120represents the master server, servers 121 and 122 represent replicateservers.

Servers 120-122 may be configured to operate as a website, a FileSystem, a File Transfer Protocol (FTP) server, a Network News TransferProtocol (NNTP) server, a database server, and the like. Where servers120-122 are configured to operate as database servers, the databaseapplications may be of disparate configurations. For example, server 120may be configured as a Structured Query Language (SQL) database server,while server 121-122 are each configured with disparate vendor specificdatabase applications, non-SQL database applications, and the like.

Devices that may operate as servers 120-122 include, but are not limitedto, personal computers desktop computers, multiprocessor systems,microprocessor-based or programmable consumer electronics, network PCs,servers, and the like. FIG. 2 illustrates one embodiment of a networkdevice that may operate as servers 120-122.

Replicator 106 may be virtually any network device that is configured toreceive and forward a packet. Such devices include, for example,routers, proxies, firewalls, load balancers, devices that performnetwork address translation, any combination of the preceding devices,and the like. FIG. 2 illustrates one embodiment of a network device thatmay operate as replicator 106.

Replicator 106 may receive the packet from a variety of sources,including client computer 102, servers 120-122, or another system (notshown). Upon receipt of the packet, replicator 106 makes a determinationon how to manage the packet. If the packet is received from clientcomputer 102, replicator 106 may evaluate the packet to determinewhether the packet is destined for servers 120-122. If the packet isdestined for servers 120-122, replicator 106 may further determinewhether the packet is to be replicated across each of servers 120-122.Replication may be based on a variety of criteria, including but notlimited to, a packet IP header, TCP header, a payload, IP option, IPflag, TCP port number, UDP port number, or any other data segmentassociated with the packet. In one embodiment, replication of the packetis based on whether the packet payload includes a write transaction, orany other substantially similar action.

Replicator 106 is further configured to log the packet in a transactionqueue. The transaction queue may include a file, database, directory,and the like. Moreover, the transaction queue may reside in memory,CD-ROM, digital versatile disks (DVD) or other optical storage, magneticcassettes, magnetic tape, magnetic disk storage, and any other storagedevices.

Replicator 106 may determine a first server in the array of servers towhich the packet is forwarded. The first server may be selected based ona variety of mechanisms, including whether the packet is to bereplicated, payload of the packet, network traffic, network topology,capacity of the server, payload of the received packet, serveravailability, and the like. For example, if the payload of the packetincludes a write transaction the selected first server may apre-determined server, such as the master server, and the like.Replicator 106 may also perform a network address translation (NAT) onthe packet. That is, in a TCP/IP packet, replicator 106 may change thesource field to a source address of replicator 106. Replicator 106forwards the packet to the selected first server.

If the packet is to be replicated, replicator 106 may open a connectionwith at least one replicate server in the array of servers 120-122.Replicator 106 forwards the packet to at least one replicate server,such that at least a portion of the content on the selected server andat least one replicate server are synchronized. In one embodiment,replicator 106 delays replication across the at least one replicateserver for a later time. Replicator 106 may also batch several packetsfor replication at a later time. Moreover, replicator 106 may replicatethe packet across each replicate server in the array of servers 120-122.

Replicator 106 is further configured to receive a response packet fromthe selected first server, and to log the response packet. Eachreplicate server may also send a replicate response packet to replicator106. Replicator 106 compares each response packet to each other. If eachresponse packet is substantially the same, replicator 106 sends amessage to client computer 102. In one embodiment, the message includesthe response packet from the selected first server. Where the responsepackets are not substantially the same, replicator 106 is configured toperform various actions. For example, replicator 106 may resend thepacket to the replicate server that provided a response that is notsubstantially the same, until the response packets are substantiallysimilar, or for a pre-determined number of times, and the like.

Replicator 106 may also send a message to client computer 102 indicatingthe existence of an error. Replicator 106 may further request that thetransaction associated with the packet be undone in the selected server.Replicator 106's actions may also include logging an error event,terminating replication attempts, and the like.

In one embodiment of the present invention, replicator 106 is configuredto enable replication of the packet across disparate serverconfigurations. For example, replicator 106 may include a subset of anoverall functionality of a vendor's normal application client, whichenables forwarding of a transformed packet to the disparate server.Replicator 106 may be configured to address commands to send packets tothe disparate server in a different format, protocol, and the like.Replicator 106 may also be enabled to provide re-request packets, errorhandling, or the like, to the disparate server. Furthermore, replicator106 may be enabled to handle a variety of disparate responses fromservers 120-122.

FIG. 2 illustrates components of an exemplary environment in which theinvention may be practiced. It will be appreciated that not allcomponents of network device 200 are illustrated, and that networkdevice 200 may include more or fewer components than those shown in FIG.2. Network device 200 may operate, for example, as a router, bridge,firewall, gateway, traffic management device (also referred to as atraffic manager), distributor, load balancer, server array controller,proxy server, and the like. Communications takes over a network, e.g.,the Internet, WAN, LAN, and/or any other communication network.

As illustrated in FIG. 2, network device 200 includes a centralprocessing unit (CPU) 202, mass memory, and network interface unit 212connected via bus 204. Network interface unit 212 includes the necessarycircuitry for connecting network device 200 to network 130, and isconstructed for use with various communication protocols including theTCP/IP and UDP/IP protocol. Network interface unit 212 may include orinterface with circuitry and components for transmitting messages anddata over a wired and/or wireless communication medium. Networkinterface unit 212 is sometimes referred to as a transceiver.

The mass memory generally includes random access memory (“RAM”) 206,read-only memory (“ROM”) 214, and one or more permanent mass storagedevices, such as hard disk drive 208. The mass memory stores operatingsystem 216 for controlling the operation of network device 200. Theoperating system 216 may comprise an operating system such as UNIX,LINUX™, or Windows™

In one embodiment, the mass memory stores program code and data forimplementing replication engine 220 and transaction queue 218. The massmemory may also store additional program code 224 and data forperforming the functions of network device 200.

In one embodiment, the network device 200 includes at least oneApplication Specific Integrated Circuit (ASIC) chip 226 coupled to bus204. As shown in FIG. 2, network interface unit 212 is also coupled tobus 204. ASIC chip 226 can include logic that performs some of theactions of network device 200. For example, in one embodiment, ASIC chip226 can perform a number of packet processing functions for incomingand/or outgoing packets. In one embodiment, ASIC chip 226 can perform atleast a portion of the logic to enable the operation of traffic engine220. In one embodiment, the network device 200 can include one or morefield-programmable gate arrays (FPGA) (not shown), instead of, or inaddition to, ASIC chip 226. A number of functions of the network devicecan be performed by ASIC chip 226, an FPGA, by CPU 202 with instructionsstored in memory, or by any combination of the ASIC chip, FPGA, and CPU.

Computer storage media may include volatile and nonvolatile, removableand non-removable media implemented in any method or technology forstorage of information, such as computer readable instructions, datastructures, program modules, or other data. Examples of computer storagemedia include RAM 206, ROM 214, EEPROM, flash memory or any other memoryarchitecture, CD-ROM, digital versatile disks (DVD) or any other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage or anyother magnetic storage devices, or any other medium that can storeinformation to be accessed by a computing device.

Network device 200 may also include an input/output interface (notshown) for communicating with external devices and/or users.

Network device 200 can also be implemented as one or more “blades” wherethe term “blade” refers to one of multiple electronic circuit boards orcards that are installed in a hardware chassis with a backplane. Anexemplary blade may include one or more processors, volatile andnon-volatile memory, interfaces suitable for communicating informationto and from the blade, and other components for enabling the operationof one or more applications. A blade may also include a specializedinterface for the backplane and other interfaces, such as a USB port,FIREWIRE port, serial port, RF interface, IR interface, Ethernetinterface, IDE controller, and the like. An application running on ablade may employ any of these interfaces to communicate information toother applications running on other blades and/or devices coupled to theblade server. Network device 200 can also be implemented as acombination of blades and additional components in the chassis.

FIG. 3 illustrates one embodiment in which a distributor manages apacket transaction over a network to a replicator. Distribution system300 may include many more components than those shown.

As shown in the figure, distribution system 300 includes client computer102, wide area network (WAN)/local area network (LAN) 104, distributor302, replicator 304, and server computers 120-122.

WAN/LAN 104 is in communication with client computer 102 and distributor302. Replicator 304 is in communication with server computers 120-122,and distributor 302. Distributor 302 is also in communication withserver computers 120-122.

Components numbered similarly to those in FIG. 1 operate in asubstantially similar manner. A difference between the environment shownin FIG. 1 and that shown in FIG. 3 is the presence of distributor 302.

Distributor 302 may be any device that manages network traffic. Suchdevices include, for example, routers, proxies, firewalls, loadbalancers, devices that perform network address translation, anycombination of the preceding devices, and the like. One embodiment ofdistributor 302 is the “BIG-IP” traffic management solution produced byF5 Networks, Incorporated, of Seattle, Wash.

Distributor 302 may receive a packet from client computer 102.Distributor 302 may forward the packet based on a variety of criteria,including, but not limited to, a packet IP header, TCP header, payload,IP option, IP flag, TCP port number, UDP port number, and any other datasegment associated with the packet. In one embodiment, the packet isforwarded based on whether the packet payload includes a writetransaction, a read transaction, or similar action. Where a packet isencrypted, such as employed with Secure Sockets Layer (SSL) packets,distributor 302 may also be configured to decrypt the packet so thatsubsequent analysis may be performed on the packet.

For example, if the packet is associated with a write transaction,distributor 302 may forward the packet to replicator 304. If the packetis associated with a read transaction, or a similar action, distributor302 may select a server in the array of servers 120-122 to which thepacket is forwarded. Distributor 302 may select the server based onnetwork traffic, network topology, capacity of the server, payload ofthe packet, and the like. Distributor 302 may also select apre-determined server, such as the master server, in the array ofservers 120-122. Distributor 302 may recognize packets that are part ofa substantially similar communication, flow, and/or stream and mayperform special processing on such packets, such as directing them tothe same server, or to replicator 304.

Distributor 302 may forward the packet to the selected server, andreceive another packet in response from the selected server. Distributor302 may forward the response packet to client computer 102. Moreover,distributor 302 may be configured to modify a TCP/IP address in thepacket prior to forwarding the packet. Distributor 302 may also modify aTCP/IP address in the response packet prior to forwarding it to clientcomputer 102.

Distributor 302 may also log the packet received from client computer102, and the response packet from the selected server.

Distributor 302 may be further configured to communicate with replicator304 through a separate intercommunication protocol to provide statusinformation, and the like. Distributor 302 may for example providestatus information about whether a server in the array of servers120-122 is available.

Distributor 302 may be implemented using one or more personal computers,multiprocessor systems, and the like. Such devices may be implementedsolely in hardware, software, or any combination of hardware andsoftware. For example, such devices may include application specificintegrated circuits (ASICs) coupled to one or more microprocessors.These ASICs may be used to provide a high-speed switch fabric while themicroprocessors may perform higher layer processing of packets. Anexemplary device that could be used as distributor 302 is network device200 of FIG. 2, configured with appropriate software.

Replicator 304 can operate in a manner substantially similar to theoperation of replicator 106 in FIG. 1, with some of its functionalitynow subsumed by distributor 302. For example, distributor 302 couldforward the packet to be replicated to replicator 304, such thatreplicator 304 need not determine if the packet is to be replicated.Hence, replicator 304 may be configured to replicate each packetreceived from distributor 302. Moreover, replicator 304 may employstatus information about servers 120-122 to determine which servers toforward the replicate packet to.

FIG. 4 illustrates one embodiment of an integrateddistributor/replicator for replicating a packet transaction over anetwork. Replication system 400 may include many more components thanthose shown.

As shown in the figure, replication system 400 includes client computer102, wide area network (WAN)/local area network (LAN) 104, integratedsystem 402, and server computers 120-122. Integrated system 402 furtherincludes distribution component 404 and replication component 406.WAN/LAN 104 is in communication with client computer 102 and integratedsystem 402 through distribution component 404. Replication component 406is in communication with server computers 120-122, and distributioncomponent 404. Distribution component 404 is also in communication withserver computers 120-122.

Components numbered similarly to those in FIG. 3 operate in asubstantially similar manner. A difference between the environment shownin FIG. 3 and that shown in FIG. 4 is that the functionality ofdistributor 302 and replicator 304 have been combined in integratedsystem 402. The configuration of FIG. 4 may be used for various reasonsincluding to lower costs (of providing two distinct devices), savingspace, and the like.

Illustrative Operation for Replicating Content

The operation of certain aspects of the present invention will now bedescribed with respect to FIGS. 5-6. FIG. 5 illustrates a flow chart forone embodiment of a process for replicating a packet transaction over anetwork between at least two servers. Process 500 may operate, forexample, within replicator 106 in FIG. 1. Process 500 may also bedistributed across replicator 304 and distributor 302 in FIG. 3.Moreover, process 500 may also operate within integrated system 402 inFIG. 4.

Process 500 begins, after a start block, at block 502, when a packet isreceived from a client. The received packet typically represents atransaction with a server, such as servers 120-122 of FIG. 1. Thetransaction may represent a write transaction, a read transaction, andthe like.

Processing continues to block 504 where the packet is logged in atransaction queue. Logging packets enable the invention to deal with thepacket at some other time, replay the packet, group packets that may berelated, and the like. Packets may be grouped based on connection types,with connection types grouped based in part on a session type, and thelike. For example, a connection type may include a group of TCP packetsbeginning with a packet where a synchronization (SYNC) flag is set, andending with a packet where a final (FIN), acknowledge (ACK) packet, andthe like, is set. A session may be based in part on a group of TCP, UDP,and any other connection types. For example, a series of UDP packets maybe grouped that are employed to send a single multi-media file. Packetsmay also be grouped where two or more TCP connections work in tandem,such as a CORBA control connection and a callback session, and the like.

Processing continues to decision block 506 where the received packet isexamined to determine whether it is to be replicated. A packet may beselected for replication based on a variety of criteria, including, butnot limited to, an IP header, TCP header, payload, IP option, IP flag,TCP port number, UDP port number, any other data associated with thepacket. In one embodiment, a packet is selected for replication based onwhether the packet payload is a write transaction. If the packet is tobe replicated, processing continues to block 508; otherwise, processingbranches to block 514.

At block 514, a server is selected for which the packet is to beforwarded. Any of a variety of mechanisms may be employed to select theserver. Such selection mechanisms include, but are not limited to, roundtrip time (RTT), least connections, packet completion rate, quality ofservice, topology, global availability, hop metric, hash of an addressin the packet, static ratio, dynamic ratio, address in the packet,content of the packet, and round robin. In one embodiment, a hash of thedestination IP address and source IP address associated with the packetis employed to select the server. In another embodiment, a hash of an IPaddress and a port number associated with the packet is employed toselect the server. In yet another embodiment, the selected server is apre-determined server, such as the master server, and the like.

Moreover, at block 514, server selection is based in part onavailability of a server. That is, at block 514, a service check may beperformed against the array of servers to ascertain their operatingstate. The service check may also allow for a multi-step verificationapproach, and the like, to determine whether a full transaction may becompleted for a given server. In the event that no server in the arrayof servers is available for selection, the packet may be queued forforwarding at some later time when a server does become available.

Processing continues to block 516, where the packet may be modifiedprior to forwarding it to the selected server. For example, the IPsource address, IP destination address, source port, destination port,and the like, associated with the packet, may be modified. Moreover, apayload of the packet may be modified where an IP address, port, and thelike, is embedded within the payload. Then, given that a server isavailable, the packet is forwarded to the selected server. Uponcompletion of block 516, processing returns to performing other actions.

At block 508, the packet may be modified substantially as describedabove, at block 516. The packet is then forwarded to a first server. Thefirst server may be selected based on a variety of mechanisms,including, but not limited to, server availability, whether a server ispre-determined as the first server, round trip time (RTT), leastconnections, packet completion rate, quality of service, topology,global availability, hop metric, hash of an address in the packet,static ratio, dynamic ratio, address in the packet, content of thepacket, and round robin.

Processing continues to decision block 510, where a determination ismade whether the packet is to be replicated across a disparate server.If it is determined that the packet is to be replicated across thedisparate server, processing branches to block 512; otherwise,processing continues to block 518.

At block 512, the packet is transformed to be compatible with thedisparate server. For example, the payload of the packet may betransformed into a different format specific to the disparate server.The transformation may also include generating additional packets forhandshaking, re-requesting packets, error handling, and the like.Additionally, as described above at block 516, the IP source address, IPdestination address, source port, destination port, or the like,associated with the packet, may be modified for the disparate server.Processing proceeds to block 518.

At block 518, a connection is opened to the replicate server. The packetis forwarded to the replicate server such that at least a portion of thecontent on the first server and the replicate server is synchronized. Ifthe replicate server is not available in the array, the packet may beforwarded at some later period, when the replicate server becomesavailable. In one embodiment, blocks 510, 512, and 518 may be repeatedas appropriate for each replicate server in the array of servers. Uponcompletion of block 518, processing returns to perform other actions.

FIG. 6 illustrates a flow chart for one embodiment of a process formanaging error checking over a network between at least two servers.Process 600 may operate for example, within replicator 106 of FIG. 1.Process 600 may also be distributed across replicator 304 anddistributor 302 of FIG. 3. Moreover, process 600 may also operate withinintegrated distributor/replicator 402 of FIG. 4.

Process 600 begins, after a start block, at block 602, where a responsepacket is received from the first server selected at block 508 of FIG.5. Processing continues to block 604, where the response packet islogged in the transaction queue. Processing continues to block 606,where if the packet is replicated, a replicate response packet isreceived from at least one replicate server. If at least one replicateserver is a disparate server, the replicate response may be transformedinto a format, protocol, and the like, such that it may be compared tothe first response packet. In one embodiment, the replicate responsepacket is also logged in the transaction queue.

Processing proceeds to decision block 608, where a determination is madeas to whether the first response packet and the replicate responsepacket are substantially similar. Responses may be substantially similarwhere the servers provide a response that has a substantially equivalentmeaning, interpretation, action, and the like, including a substantiallyequivalent error message, accept message, request message, content, andthe like. Substantially similar responses further include an instancewhere a database protocol, application, and the like, is different buthas an intended substantially equivalent meaning, action, and the like.If it is determined that the response packets are substantially similar,processing branches to block 614; otherwise, processing branches toblock 612.

At block 612, an appropriate error action is performed. For example, oneerror action may include resending the original packet to at least onereplicate server, until response packets are substantially similar, orfor a pre-determined number of times. Yet another error action mayinclude sending an error message to the client computer. Still anothererror action may include providing a request to back out of the packettransaction to the first server. Upon completion of block 612,processing returns to perform other actions.

At block 614, the first response packet, the replicate response packet,a combination of the response packets, and the like, is forwarded to theclient computer. Upon completion of actions at block 614, the processreturns to performing other actions.

Although not specifically described in the above, blocks 606-614 may berepeated for each replicate server in the array of servers such that atleast a portion of their content is synchronized with the first server.

It will be understood that each block of the flowchart illustration, andcombinations of blocks in the flowchart illustration, can be implementedby computer program instructions. These program instructions may beprovided to a processor to produce a machine, such that theinstructions, which execute on the processor, create means forimplementing the actions specified in the flowchart block or blocks. Thecomputer program instructions may be executed by a processor to cause aseries of operational steps to be performed by the processor to producea computer implemented process such that the instructions, which executeon the processor provide steps for implementing the actions specified inthe flowchart block or blocks.

Accordingly, blocks of the flowchart illustration support combinationsof means for performing the specified actions, combinations of steps forperforming the specified actions and program instruction means forperforming the specified actions. It will also be understood that eachblock of the flowchart illustration, and combinations of blocks in theflowchart illustration, can be implemented by special purposehardware-based systems which perform the specified actions or steps, orcombinations of special purpose hardware and computer instructions.

The above specification, examples, and data provide a completedescription of the manufacture and use of the composition of theinvention. Since many embodiments of the invention can be made withoutdeparting from the spirit and scope of the invention, the inventionresides in the claims hereinafter appended.

We claim:
 1. A method for synchronizing a plurality of servers over anetwork, comprising: (a) receiving a packet from a client; (b)forwarding the packet to a first server in the plurality of servers,wherein the first server includes a first database; (c) forwarding thepacket to at least one other server in the plurality of servers, whereinthe at least one other server includes a second database that isdisparate to the first database, comprising: determining that the atleast one other server has a disparate configuration to a configurationof the first server; and transforming the packet into a formatcompatible with the disparate configuration; (d) receiving a response tothe packet, from the first server; (e) receiving at least one otherresponse to the transformed packet, from the at least one other server;(f) determining whether the response is different in content meaningfrom the at least one other response, and if it is, then resending thetransformed packet to at least one other server in the plurality ofservers until each of the response and the at least one other responseare determined to be the same in content meaning or until apre-determined number of resends have been performed, upon which anerror message is sent to the client; and (g) sending one of the responseor the at least one other response to the client based on a comparisonof each of the response and the at least one other response thatdetermines that the response and the at least one other response have asame content meaning independent of being identical, wherein forwardingthe transformed packet synchronizes at least a portion of the content onthe first server and the at least one other server.
 2. A method forsynchronizing a plurality of servers over a network, comprising: (a)receiving a packet from a client; (b) determining that the packet is awrite packet and forwarding the packet and a replicate packet to atleast two separate servers in the plurality of servers, comprising:determining that the at least two separate servers have disparateconfigurations; and transforming the packet and the replicate packetinto a format compatible with the disparate configuration for each ofthe at least two separate servers; (d) receiving at least two separateresponses from the at least two separate servers, and determiningwhether the at least two separate responses are different in contentmeaning from each other, and if it is, then resending the transformedreplicate packet to at least one other server in the plurality ofservers until each of the separate responses are determined to be thesame in content meaning or until a pre-determined number of resends havebeen performed, upon which an error message is sent to the client; and(e) sending a response to the client based on a comparison of the atleast two separate responses from at least two separate servers in theplurality of servers that determines that the at least two separateresponses are the same in content meaning independent of the at leasttwo separate responses being identical, wherein forwarding thetransformed replicate packet synchronizes at least a portion of thecontent on the at least two separate servers.
 3. The method of claim 2,wherein sending the response further comprises selecting to send theresponse that is in a content format consistent with the packet contentformat received from the client.
 4. A system for replicating packettransactions over a network, comprising: (a) a plurality of serversincluding a computer processor, wherein at least two of the plurality ofservers are configured to store the same content; and (b) a replicationcomponent that is programmed to perform actions, including: (i)receiving a packet from a client; (ii) forwarding the packet to a firstserver in the plurality of servers over the network; (iii) receiving aresponse to the packet, from the first server; and (iv) determining thatthe packet is to be replicated and at least one other server in theplurality of servers is available to receive packets; (v) forwarding areplicate packet to the at least one available other server, comprising:determining that the at least one available other server has a disparateconfiguration to a configuration of the first server; and transformingthe replicate packet into a format compatible with the disparateconfiguration; (vi) receiving at least one other response to thetransformed replicate packet from the at least one available otherserver; (vii) determining if each of the response and the at least oneother response have a same content meaning independent of the responseand the at least one other response being identical, and: if theresponse and the at least one other response have the same contentmeaning, then sending one of the response or the at least one otherresponse to the client, wherein at least a portion of the content on thefirst server and the at least one available other server aresynchronized as a result of forwarding the transformed replicate packet;and if the response is different in content meaning from the at leastone other response, then resending the transformed replicate packet toat least one available other server in the plurality of servers untileach of the response and the at least one other response are determinedto be the same in content meaning or until a pre-determined number ofresends have been performed, upon which an error message is sent to theclient.
 5. The system of claim 4, further comprising a distributioncomponent that is programmed to perform an action, if the receivedpacket is a read packet, of forwarding the received read packet to thefirst server in the plurality of servers.
 6. The system of claim 4,wherein the packet that is replicated, further comprises a write packet.7. The system of claim 4, wherein the replication component isprogrammed to perform actions, further comprising, storing the packetand the response to the packet.
 8. The system of claim 4, whereinforwarding the transformed replicate packet further comprises delayingfor a predetermined period the forwarding of the transformed replicatepacket.
 9. The system of claim 4, wherein transforming the replicatepacket further comprises transforming a packet payload of the replicatepacket into a format compatible with the disparate configuration. 10.The system of claim 4, wherein configuration includes at least one ofFTP server, database server, content server, and web server.
 11. Thesystem of claim 4, wherein the replication component is programmed toperform actions, further comprising, if the packet is a read packet,selecting the first server based on a load-balancing mechanism.
 12. Thesystem of claim 11, wherein the load-balancing mechanism is selectedfrom at least one of a round trip time (RTT), a least connections, apacket completion rate, a quality of service, a topology, a globalavailability, a hop metric, a hash of an address in a received packet, astatic ratio, a dynamic ratio, a source IP address, a destination IPaddress, a port number, and a round robin mechanism.
 13. The system ofclaim 4, wherein determining that the packet is to be replicated isbased in part on at least one of an IP Option, IP Flag, IP address, TCPport number, UDP port number, and a payload of the packet.
 14. Thesystem of claim 4, wherein the packet comprises at least one of an FTPpacket, an NNTP packet, a CORBA session packet, and a databasetransaction packet.
 15. An apparatus for replicating packet transactionsover a network, comprising: (a) a transceiver component that isprogrammed to communicate packet transactions over the network; (b) acomputer processor that executes a distribution component that isprogrammed to perform actions, including: (i) receiving a packet from aclient; (ii) forwarding the packet to a first server in a plurality ofservers, wherein at least two of the plurality of servers are configuredto store the same content; and (iii) receiving a response to the packet,from the first server; and (c) a replication component that isprogrammed to perform actions, including: (i) determining that thereceived packet is a write packet and generating a replicate packet fromthe received packet; (ii) forwarding the replicate packet to at leastone other server in the plurality of servers, comprising: determiningthat the at least one other server has a disparate configuration to aconfiguration of the first server; and transforming the replicate packetinto a format compatible with the disparate configuration; (iii)receiving at least one other response to the transformed replicatepacket from the at least one other server; and (iv) determining if eachof the response and the at least one other response have a same contentmeaning independent of the response and the at least one other responsebeing identical, and: if the response and the at least one otherresponse have the same content meaning, sending one of the response orthe at least one other response to the client, wherein at least aportion of the content on the first server and the at least the otherserver are synchronized as a result of forwarding the transformedreplicate packet; and if the response is different in content meaningfrom the at least one other response, then resending the transformedreplicate packet to at least one other server in the plurality ofservers until each of the response and the at least one other responseare determined to be the same in content meaning or until apre-determined number of resends have been performed, upon which anerror message is sent to the client.
 16. An apparatus for synchronizingcontent on a plurality of servers over a network, comprising: (a) atransceiver programmed to receive and to forward packet traffic; and (b)a computer processor, coupled to the transceiver, that is programmed toperform actions, including: (i) receiving a packet from a client; (ii)forwarding the packet to a first server in the plurality of servers;(iii) forwarding a replicate packet based on the packet to at least oneother server in the plurality of servers, comprising: determining thatthe at least one other server has a disparate configuration to aconfiguration of the first server; and transforming the replicate packetinto a format compatible with the disparate configuration; (iv)receiving a response to the packet, from the first server; (v) receivingat least one other response to the transformed replicate packet, fromthe at least one other server; and (vi) determining if each of theresponse and the at least one other response have a same content meaningindependent of being identical, and if the response and the at least oneother response have the same content meaning, sending one of theresponse or the at least one other response to the client, whereinforwarding the transformed replicate packet synchronizes at least aportion of the content on the first server and the at least one otherserver; and if the response is different in content meaning from the atleast one other response, then resending the transformed replicatepacket to at least one other server in the plurality of servers untileach of the response and the at least one other response are determinedto be the same in content meaning or until a pre-determined number ofresends have been performed, upon which an error message is sent to theclient.
 17. The apparatus of claim 16, wherein forwarding thetransformed replicate packet further comprises delaying for apredetermined period the forwarding of the transformed replicate packet.18. The apparatus of claim 16, wherein the disparate configurationincludes at least one of FTP server, database server, content server,and web server.
 19. An apparatus for replicating content on a pluralityof servers over a network, comprising: memory; and one or more computerprocessors that include computer-executable instructions stored in thememory for: (a) a distributor that is in communication with theplurality of servers, the distributor being programmed to performactions, including: (i) receiving a packet from a client; (ii) selectinga first server in the plurality of servers; and (iii) forwarding thepacket to the first server; and (b) a replicator, performing furtheractions, including: (i) generating a replicate packet based on thereceived packet; (ii) forwarding the replicate packet to at least oneother server in the plurality of servers, comprising: determining thatthe at least one other server has a disparate configuration to aconfiguration of the first server; and transforming the replicate packetinto a format compatible with the disparate configuration; (iii)receiving a response to the packet, from the first server; (iv)receiving at least one other response to the transformed replicatepacket, from the at least one other server; and (v) determining if eachof the response and the at least one other response have a contentmeaning independent of being identical, and if the response and the atleast one other response have a same content meaning independent ofbeing identical, sending one of the response or the at least one otherresponse to the client, wherein at least a portion of the content on thefirst server and the at least the other server are synchronized as aresult of forwarding the transformed replicate packet; and if theresponse is different in content meaning from the at least one otherresponse, then resending the transformed replicate packet to at leastone other server in the plurality of servers until each of the responseand the at least one other response are determined to be the same incontent meaning or until a pre-determined number of resends have beenperformed, upon which an error message is sent to the client.
 20. Theapparatus of claim 19, wherein selecting the first server furthercomprises selecting the first server based on a load-balancing mechanismselected from at least one of a round trip time (RTT), a leastconnections, a packet completion rate, a quality of service, a topology,a global availability, a hop metric, a hash of an address in thereceived packet, a static ratio, a dynamic ratio, a source IP address, adestination IP address, a port number, and a round robin mechanism. 21.The apparatus of claim 19, wherein forwarding at least one of the packetand the transformed replicate packet further comprises performing anetwork address translation.
 22. The apparatus of claim 19, wherein thedisparate configuration includes at least one of a database server,content server, web server, and FTP server.